package com.netscenery.yang.model;

import java.util.ArrayList;

public class Validator {
	private boolean valid = true;
	private ArrayList<Message> msgs;
	/**
	 * @return the result
	 */
	public boolean isValid() {
		return valid;
	}
	/**
	 * @param result the result to set
	 */
	public void setIsValid(boolean valid) {
		this.valid = valid;
	}
	
	public int getMsgsNumber(){
		if (null == msgs){
			return 0;
		}
		
		return msgs.size();
	}

	public boolean addMsg(Message msg){
		if (null == msg){
			return false;
		}
		
		if(null == msgs){
			msgs = new ArrayList<Message>(1);
		}
		
		return msgs.add(msg);
	}
	
	public Message getMsg(int index){
		if (null == msgs){
			return null;
		}
		if (index < 0){
			return null;
		}
		if (index >= msgs.size()){
			return null;
		}
		return msgs.get(index);
	}
	public void copy(Validator validator){
		if (null == validator){
			return;
		}
		if (!validator.isValid()){
			this.setIsValid(false);
		}
		int msgsize = validator.getMsgsNumber();
		for (int j = 0; j < msgsize; j++){
			Message msg = validator.getMsg(j);
			if (null != msg){
				this.addMsg(msg);
			}
			
		}
	}
	
	public String toString(){
		StringBuffer sb = new StringBuffer();
		sb.append("\nThe entity is valid:");
		if (isValid()){
			sb.append("true");
		}
		else {
			sb.append("false");
		}
		int size = getMsgsNumber();
		if (0 == size){
			return sb.toString();
		}
		sb.append("\n");
		sb.append("The detail informations are listed below:");
		
		for (int i = 0; i < size; i++){
			Message msg = getMsg(i);
			sb.append("\n");
			sb.append(msg.toString());
		}
		return sb.toString();
	}
}
